home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / share / perl5 / XML / XPath / Literal.pm < prev    next >
Encoding:
Perl POD Document  |  2001-03-16  |  1.8 KB  |  100 lines

  1. # $Id: Literal.pm,v 1.11 2001/03/16 11:10:08 matt Exp $
  2.  
  3. package XML::XPath::Literal;
  4. use XML::XPath::Boolean;
  5. use XML::XPath::Number;
  6. use strict;
  7.  
  8. use overload 
  9.         '""' => \&value,
  10.         'cmp' => \&cmp;
  11.  
  12. sub new {
  13.     my $class = shift;
  14.     my ($string) = @_;
  15.     
  16. #    $string =~ s/"/"/g;
  17. #    $string =~ s/'/'/g;
  18.     
  19.     bless \$string, $class;
  20. }
  21.  
  22. sub as_string {
  23.     my $self = shift;
  24.     my $string = $$self;
  25.     $string =~ s/'/'/g;
  26.     return "'$string'";
  27. }
  28.  
  29. sub as_xml {
  30.     my $self = shift;
  31.     my $string = $$self;
  32.     return "<Literal>$string</Literal>\n";
  33. }
  34.  
  35. sub value {
  36.     my $self = shift;
  37.     $$self;
  38. }
  39.  
  40. sub cmp {
  41.     my $self = shift;
  42.     my ($cmp, $swap) = @_;
  43.     if ($swap) {
  44.         return $cmp cmp $$self;
  45.     }
  46.     return $$self cmp $cmp;
  47. }
  48.  
  49. sub evaluate {
  50.     my $self = shift;
  51.     $self;
  52. }
  53.  
  54. sub to_boolean {
  55.     my $self = shift;
  56.     return (length($$self) > 0) ? XML::XPath::Boolean->True : XML::XPath::Boolean->False;
  57. }
  58.  
  59. sub to_number { return XML::XPath::Number->new($_[0]->value); }
  60. sub to_literal { return $_[0]; }
  61.  
  62. sub string_value { return $_[0]->value; }
  63.  
  64. 1;
  65. __END__
  66.  
  67. =head1 NAME
  68.  
  69. XML::XPath::Literal - Simple string values.
  70.  
  71. =head1 DESCRIPTION
  72.  
  73. In XPath terms a Literal is what we know as a string.
  74.  
  75. =head1 API
  76.  
  77. =head2 new($string)
  78.  
  79. Create a new Literal object with the value in $string. Note that " and
  80. ' will be converted to " and ' respectively. That is not part of the XPath
  81. specification, but I consider it useful. Note though that you have to go
  82. to extraordinary lengths in an XML template file (be it XSLT or whatever) to
  83. make use of this:
  84.  
  85.     <xsl:value-of select=""I'm feeling &quot;sad&quot;""/>
  86.  
  87. Which produces a Literal of:
  88.  
  89.     I'm feeling "sad"
  90.  
  91. =head2 value()
  92.  
  93. Also overloaded as stringification, simply returns the literal string value.
  94.  
  95. =head2 cmp($literal)
  96.  
  97. Returns the equivalent of perl's cmp operator against the given $literal.
  98.  
  99. =cut
  100.